home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / documents / OpenGL / opengldoc / glspec / histogram.spec < prev    next >
Encoding:
Text File  |  1996-11-11  |  27.9 KB  |  685 lines

  1. Name
  2.  
  3.     EXT_histogram
  4.  
  5. Name Strings
  6.  
  7.     GL_EXT_histogram
  8.  
  9. Version
  10.  
  11.     $Date: 1996/04/02 00:08:05 $ $Revision: 1.2 $
  12.  
  13. Number
  14.  
  15.     11
  16.  
  17. Dependencies
  18.  
  19.     EXT_abgr affects the definition of this extension
  20.     EXT_texture is required
  21.  
  22. Overview
  23.  
  24.     This extension defines pixel operations that count occurences of
  25.     specific color component values (histogram) and that track the minimum
  26.     and maximum color component values (minmax).  An optional mode allows
  27.     pixel data to be discarded after the histogram and/or minmax operations
  28.     are completed.  Otherwise the pixel data continue on to the next
  29.     operation unaffected.
  30.  
  31. New Procedures and Functions
  32.  
  33.     void HistogramEXT(enum target,
  34.               sizei width,
  35.               enum internalformat,
  36.               boolean sink);
  37.  
  38.     void ResetHistogramEXT(enum target);
  39.  
  40.     void GetHistogramEXT(enum target,
  41.              boolean reset,
  42.              enum format,
  43.              enum type,
  44.              void* values);
  45.  
  46.     void GetHistogramParameterivEXT(enum target,
  47.                     enum pname,
  48.                     int* params);
  49.  
  50.     void GetHistogramParameterfvEXT(enum target,
  51.                     enum pname,
  52.                     float* params);
  53.  
  54.     void MinmaxEXT(enum target,
  55.            enum internalformat,
  56.            boolean sink);
  57.  
  58.     void ResetMinmaxEXT(enum target);
  59.  
  60.     void GetMinmaxEXT(enum target,
  61.               boolean reset,
  62.               enum format,
  63.               enum type,
  64.               void* values);
  65.  
  66.     void GetMinmaxParameterivEXT(enum target,
  67.                  enum pname,
  68.                  int* params);
  69.  
  70.     void GetMinmaxParameterfvEXT(enum target,
  71.                  enum pname,
  72.                  float* params);
  73.  
  74. New Tokens
  75.  
  76.     Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
  77.     the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
  78.     GetDoublev, and by the <target> parameter of HistogramEXT,
  79.     ResetHistogramEXT, GetHistogramEXT, GetHistogramParameterivEXT, and
  80.     GetHistogramParameterfvEXT:
  81.  
  82.     HISTOGRAM_EXT                0x8024
  83.  
  84.     Accepted by the <target> parameter of HistogramEXT,
  85.     GetHistogramParameterivEXT, and GetHistogramParameterfvEXT:
  86.  
  87.     PROXY_HISTOGRAM_EXT            0x8025
  88.  
  89.     Accepted by the <pname> parameter of GetHistogramParameterivEXT and
  90.     GetHistogramParameterfvEXT:
  91.  
  92.     HISTOGRAM_WIDTH_EXT                 0x8026
  93.     HISTOGRAM_FORMAT_EXT                0x8027
  94.     HISTOGRAM_RED_SIZE_EXT              0x8028
  95.     HISTOGRAM_GREEN_SIZE_EXT            0x8029
  96.     HISTOGRAM_BLUE_SIZE_EXT             0x802A
  97.     HISTOGRAM_ALPHA_SIZE_EXT            0x802B
  98.     HISTOGRAM_LUMINANCE_SIZE_EXT        0x802C
  99.     HISTOGRAM_SINK_EXT                  0x802D
  100.  
  101.     Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
  102.     the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
  103.     GetDoublev, and by the <target> parameter of MinmaxEXT, ResetMinmaxEXT,
  104.     GetMinmaxEXT, GetMinmaxParameterivEXT, and GetMinmaxParameterfvEXT:
  105.  
  106.     MINMAX_EXT                0x802E
  107.  
  108.     Accepted by the <pname> parameter of GetMinmaxParameterivEXT and
  109.     GetMinmaxParameterfvEXT:
  110.  
  111.     MINMAX_FORMAT_EXT            0x802F
  112.     MINMAX_SINK_EXT                0x8030
  113.  
  114. Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
  115.  
  116.     A new error token value, TABLE_TOO_LARGE_EXT, is defined and added to
  117.     table 2.3:
  118.                                        Offending
  119.                                        command
  120.     Error            Description                   ignored?
  121.     -----            -----------                   ---------
  122.     INVALID_ENUM        enum argument out of range           Yes
  123.     INVALID_VALUE        Numeric argument out of range           Yes
  124.     INVALID_OPERATION    Operation illegal in current state       Yes
  125.     STACK_OVERFLOW        Command would cause a stack overflow       Yes
  126.     STACK_UNDERFLOW        Command would cause a stack underflow       Yes
  127.     OUT_OF_MEMORY        Not enough memory left to execute command  Unknown
  128.     TEXTURE_TOO_LARGE_EXT    The specified texture is too large       Yes
  129.     TABLE_TOO_LARGE_EXT    The specified table is too large       Yes
  130.  
  131.     Table 2.3: Summary of GL errors
  132.  
  133.     and defined as follows:
  134.  
  135.     GL_TABLE_TOO_LARGE_EXT              0x8031
  136.  
  137.  
  138. Additions to Chapter 3 of the 1.0 specification (Rasterization)
  139.  
  140.     The specification of histogram and minmax operators is added to
  141.     the GL Specification in section 3.6.2, "Pixel Transfer Modes."  A
  142.     histogram table is specified using the HistogramEXT command.  Its
  143.     <target> parameter must be HISTOGRAM_EXT if a histogram table is
  144.     to be specified.  (Optional target value PROXY_HISTOGRAM_EXT is
  145.     described below.)  Its <width> parameter, which must be a power of
  146.     2, specifies the number of entries in the histogram table, and its
  147.     <internalformat> parameter specifies the format of each table
  148.     entry.  <sink> specifies whether pixel groups will be consumed by
  149.     the histogram operation (TRUE) or passed on to the minmax
  150.     operation (FALSE).  The error INVALID_VALUE results if <width> is
  151.     specified less than zero or is not a power of 2.  The error
  152.     TABLE_TOO_LARGE_EXT results if the specified histogram table is
  153.     too large for the implementation.  (See the PROXY discussion
  154.     below.)  The error INVALID_ENUM results if <internalformat> is not
  155.     one of the values accepted by the <components> parameter of
  156.     TexImage2D (as defined by EXT_texture), except that values 1, 2,
  157.     3, 4, INTENSITY_EXT, INTENSITY4_EXT, INTENSITY8_EXT,
  158.     INTENSITY12_EXT, and INTENSITY16_EXT are not accepted.
  159.  
  160.     If no error results from the execution of HistogramEXT, the specified
  161.     histogram table is redefined to have <width> entries, each with the
  162.     specified internal format.  The entries are indexed zero through N-1,
  163.     where N is the <width> of the table.  Each value in each entry is set
  164.     to zero.  The values in the previous histogram table, if any, are lost.
  165.     
  166.     It is acceptable for an implementation to vary its allocation of
  167.     internal component resolution based any HistogramEXT parameter, but the
  168.     allocation must not be a function of any other factor, and cannot be
  169.     changed once it is established.  In particular, allocations must be
  170.     invariant -- the same allocation must be made each time a histogram is
  171.     specified with the same parameter values.  Provision is made for an
  172.     application to determine what component resolutions are available
  173.     without having to fully specify the histogram (see below).
  174.  
  175.     A minmax table is specified using the MinmaxEXT command.  Its <target>
  176.     parameter must be MINMAX_EXT.  <internalformat> may be any of the token
  177.     values accepted by the <components> parameter of TexImage2D, except that
  178.     1, 2, 3, 4, INTENSITY_EXT, INTENSITY4_EXT, INTENSITY8_EXT,
  179.     INTENSITY12_EXT, and INTENSITY16_EXT are not accepted.  <sink> is set
  180.     to TRUE or FALSE.  The resulting minmax table always has 2 entries,
  181.     each with values corresponding only to the components of the internal
  182.     format.
  183.  
  184.     The operations of the histogram and minmax are added to the GL
  185.     Specification in section 3.6.3, "Rasterization of Pixel
  186.     Rectangles, immediately following the subsection "Index Lookup",
  187.     and immediately prior to the subsection "Final Conversion".
  188.     Histogram and minmax operations are performed only for RGBA pixel
  189.     groups, though these groups may have been specified as color
  190.     indices and converted to RGBA by index table lookup.  Histogram
  191.     and minmax are enabled and disabled by calling Enable or Disable
  192.     with HISTOGRAM_EXT or MINMAX_EXT passed as the <cap> parameter.
  193.     If HISTOGRAM_EXT is enabled and the width of the table is
  194.     non-zero, and the pixel groups contain RGBA values, then indices
  195.     Ri, Gi, Bi, and Ai are derived from the red, green, blue, and
  196.     alpha components of each pixel group (without modifying these
  197.     components) by clamping the components to [0,1], multiplying each
  198.     by one less than the width of the histogram table, and rounding
  199.     each to the nearest integer.  If the format of the HISTOGRAM_EXT
  200.     table includes red or luminance, the red or luminance component of
  201.     histogram entry Ri is incremented by one.  If the format of the
  202.     HISTOGRAM_EXT table includes green, the green component of
  203.     histogram entry Gi is incremented by one.  The blue and alpha
  204.     components of histogram entries Bi and Ai are incremented in the
  205.     same way.  If a histogram entry component is incremented beyond
  206.     its maximum value, its value becomes undefined.  (This is not an
  207.     error.)
  208.  
  209.     If MINMAX_EXT is enabled, and the pixel groups contain RGBA values, then
  210.     the red, green, blue, and alpha components of each group are compared
  211.     to the minimum and maximum values for each, which are stored in the
  212.     2-element minmax table.  (The first element stores the minimum values,
  213.     the second stores the maximum values.)  If the format of this table
  214.     includes red or luminance, the red component value replaces the red or
  215.     luminance value in the minimum table element if and only if it is less
  216.     than that component.  Likewise, if the format includes red or luminance
  217.     and the red component of the group is greater than the red or luminance
  218.     value in the maximum element, the red group component replaces the red
  219.     or luminance maximum component.  If the format of the table includes
  220.     green, the green group component conditionally replaces the green
  221.     minimum and/or maximum if it is smaller or larger, respectively.  The
  222.     blue and alpha group components are similarly tested and replaced, if
  223.     the table format includes blue and/or alpha.  The internal type of the
  224.     minimum and maximum component values is floating point -- there are no
  225.     semantics defined for the treatment of group component values that are
  226.     outside the representable range of the minimum and maximum values.
  227.  
  228.     By default histogram and minmax operations have no effect on the stream
  229.     of pixel groups being processed.  If HISTOGRAM_EXT is enabled and the
  230.     histogram <sink> parameter was specified as TRUE, however, all RGBA
  231.     pixel groups are discarded immediately after the histogram operation
  232.     is completed.  Because histogram precedes minmax, no minmax operation
  233.     is performed.  No pixel fragments are generated, no change is made to
  234.     texture memory contents, and no pixel values are returned.  If
  235.     MINMAX_EXT is enabled and the minmax <sink> parameter was specified
  236.     as TRUE, all RGBA pixel groups are discarded immediately after the
  237.     minmax operation is completed.  Because minmax follows histogram, a
  238.     histogram operation with <sink> set to FALSE may precede such a minmax
  239.     operation.  Again no pixel fragments are generated, no change is made
  240.     to texture memory contents, and no pixel values are returned.
  241.  
  242.     The current contents of the histogram tables are queried using
  243.     GetHistogramEXT.  <target> must be HISTOGRAM_EXT.  <format> must be one
  244.     of RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
  245.     LUMINANCE_ALPHA.  <type> must be UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT,
  246.     SHORT, UNSIGNED_INT, INT, or FLOAT.  A 1-dimensional image with the
  247.     same width as the histogram is returned to <values>.  No pixel
  248.     transfer operations are performed on this image, but pixel storage
  249.     modes that are applicable to ReadPixels are performed.  Color
  250.     components that are requested in the specified <format>, but which are
  251.     not included in the internal format of the histogram, are returned as
  252.     zero.  The assignments of internal color components to the components
  253.     requested by <format> are
  254.  
  255.         internal component    resulting component
  256.         ------------------    -------------------
  257.         red            red
  258.         green            green
  259.         blue            blue
  260.         alpha            alpha
  261.         luminance        red
  262.     
  263.     <reset> is either TRUE or FALSE.  If TRUE, each component counter that
  264.     is actually returned is reset to zero.  Counters that are not returned
  265.     are not modified.  All counters of all elements of histogram <target>
  266.     are reset to zero when ResetHistogramEXT is called.  <target> must be
  267.     either HISTOGRAM_EXT.  It is not an error to reset or query the contents
  268.     of a histogram table with zero entries.
  269.  
  270.     The current contents of the minmax tables are queried using
  271.     GetMinmaxEXT.  <target> must be MINMAX_EXT.  <format> must be one
  272.     of RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
  273.     LUMINANCE_ALPHA.  <type> must be UNSIGNED_BYTE, BYTE,
  274.     UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.  A
  275.     1-dimensional image with width of 2 is returned to values.  No
  276.     pixel transfer operations are performed on this image, but pixel
  277.     storage modes that are applicable to ReadPixels are
  278.     performed. Color components that are requested in the specified
  279.     <format>, but which are not included in the internal format of the
  280.     minmax table, are returned as zero.  The assignment of internal
  281.     color components to the components requested by <format> are the
  282.     same as for histogram return.
  283.  
  284.     <reset> is either TRUE or FALSE.  If TRUE, each minimum value that is
  285.     actually returned is reset to the maximum representable value, and each
  286.     maximum value that is returned is reset to the minimum representable
  287.     value.  Minimum and maximum values that are not returned are not
  288.     modified.  All minimum and maximum values of minmax table <target> are
  289.     reset to their maximum and minimum representable values, respectively,
  290.     when ResetMinmaxEXT is called.  <target> must be MINMAX_EXT.
  291.  
  292.     Query support
  293.     -------------
  294.  
  295.     Alternate sets of partial histogram state are defined for the
  296.     proxy histogram PROXY_HISTOGRAM_EXT.  Specifically,
  297.     HISTOGRAM_WIDTH_EXT, HISTOGRAM_FORMAT, HISTOGRAM_RED_SIZE_EXT,
  298.     HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
  299.     HISTOGRAM_ALPHA_SIZE_EXT, and HISTOGRAM_LUMINANCE_SIZE_EXT are
  300.     maintained for the proxy histogram.  When HistogramEXT is called
  301.     with <target> set to PROXY_HISTOGRAM_EXT, these proxy state values
  302.     are always recomputed and updated, even if the histogram is too
  303.     large to actually be used.  If the histogram is too large, all of
  304.     these state variables are set to zero.  If the histogram could be
  305.     accommodated by Histogram called with <target> HISTOGRAM_EXT,
  306.     these values are set as though HISTOGRAM_EXT were being defined.
  307.     All of these state values can be queried with
  308.     GetHistogramParameterivEXT or GetHistogramParameterfvEXT with
  309.     <target> set to PROXY_HISTOGRAM_EXT.  Calling HistogramEXT with
  310.     <target> PROXY_HISTOGRAM_EXT has no effect on the actual
  311.     histogram.
  312.  
  313.     There is no image associated with PROXY_HISTOGRAM_EXT.  Therefore
  314.     PROXY_HISTOGRAM_EXT cannot be used as a histogram, and its image must
  315.     never be queried using GetHistogramEXT.  (The error INVALID_ENUM
  316.     results if this is attempted.)
  317.  
  318. Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
  319. and the Framebuffer)
  320.  
  321.     The operation of histogram and minmax during pixel copy and query
  322.     operations is identical to the operation during pixel drawing and
  323.     texture image definition.
  324.  
  325. Additions to Chapter 5 of the 1.0 Specification (Special Functions)
  326.  
  327.     GetHistogramEXT, GetHistogramParameterivEXT, GetHistogramParameterfvEXT,
  328.     GetMinmaxEXT, GetMinmaxParameterivEXT, and GetMinmaxParameterfvEXT are
  329.     not included in display lists -- they are executed immediately when
  330.     called.
  331.  
  332. Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
  333.  
  334.     Integer and floating point query functions GetHistogramParameterivEXT
  335.     and GetHistogramParameterfvEXT are provided.  <target> must be
  336.     HISTOGRAM_EXT or PROXY_HISTOGRAM_EXT.  <pname> is one of
  337.     HISTOGRAM_FORMAT_EXT, HISTOGRAM_WIDTH_EXT, HISTOGRAM_RED_SIZE_EXT,
  338.     HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
  339.     HISTOGRAM_ALPHA_SIZE_EXT, HISTOGRAM_LUMINANCE_SIZE_EXT,
  340.     or HISTOGRAM_SINK_EXT.  The value of the specified parameter is
  341.     returned in <params>.
  342.  
  343.     Integer and floating point query functions GetMinmaxParameterivEXT and
  344.     GetMinmaxParameterfvEXT are provided.  <target> must be MINMAX_EXT.
  345.     <pname> is MINMAX_FORMAT_EXT or MINMAX_SINK_EXT.  The value of the
  346.     specified parameter is returned in <params>.
  347.  
  348. Additions to the GLX Specification
  349.  
  350.     None
  351.  
  352. GLX Protocol
  353.  
  354.     Ten new GL commands are added.
  355.  
  356.     The following four rendering commands are sent to the server as
  357.     part of a glXRender request:
  358.  
  359.         HistogramEXT
  360.             2           20              rendering command length
  361.             2           4110            rendering command opcode
  362.         4        ENUM        target
  363.         4         INT32        width
  364.         4        ENUM        internalformat
  365.         1        BOOL        sink
  366.         3                unused
  367.  
  368.         ResetHistogramEXT
  369.             2           8               rendering command length
  370.             2           4112            rendering command opcode
  371.         4        ENUM        target
  372.  
  373.         MinmaxEXT
  374.             2           16              rendering command length
  375.             2           4111            rendering command opcode
  376.         4        ENUM        target
  377.         4        ENUM        internalformat
  378.         1        BOOL        sink
  379.         3                unused
  380.  
  381.         ResetMinmaxEXT
  382.             2           8               rendering command length
  383.             2           4113            rendering command opcode
  384.         4        ENUM        target
  385.  
  386.  
  387.     The remaining commands are non-rendering commands. These commands
  388.     are sent separately (i.e., not as part of a glXRender or
  389.     glXRenderLarge request), using the glXVendorPrivateWithReply
  390.     request:
  391.  
  392.         GetHistogramEXT
  393.             1           CARD8           opcode (X assigned)
  394.             1           17              GLX opcode (glXVendorPrivateWithReply)
  395.             2           7            request length
  396.             4           5               vendor specific opcode
  397.         4        GLX_CONTEXT_TAG context tag
  398.         4        ENUM        target
  399.         4        ENUM        format
  400.         4        ENUM        type
  401.         1        BOOL        swap_bytes
  402.         1        BOOL        reset
  403.         2                unused
  404.       =>
  405.             1           1               reply
  406.             1                           unused
  407.             2           CARD16          sequence number
  408.             4           n               reply length
  409.             24                          unused
  410.             4*n         LISTofBYTE      pixels
  411.  
  412.         If <format> or <type> is not valid then the command is
  413.         erroneous and n=0. The structure of <pixels> is described in
  414.         Appendix A of the GLX Protocol Specification, "Pixel Data",
  415.         using the parameters <swap_bytes>, <format>, and <type>. No
  416.         extra padding is needed after <pixels> because the image
  417.         format already pads to 32 bits.
  418.  
  419.  
  420.         GetHistogramParameterfvEXT
  421.             1           CARD8           opcode (X assigned)
  422.             1           17              GLX opcode (glXVendorPrivateWithReply)
  423.             2           5            request length
  424.             4           6               vendor specific opcode
  425.         4        GLX_CONTEXT_TAG context tag
  426.         4        ENUM        target
  427.         4        ENUM        pname
  428.       =>
  429.             1           1               reply
  430.             1                           unused
  431.             2           CARD16          sequence number
  432.             4           m               reply length, m = (n==1 ? 0 : n)
  433.             4                           unused
  434.             4           CARD32        n
  435.  
  436.         if (n=1) this follows:
  437.  
  438.             4           INT32        params
  439.             12                          unused
  440.  
  441.         otherwise this follows:
  442.  
  443.             16                          unused
  444.         n*4        LISTofINT32     params
  445.  
  446.         Note that n may be zero, indicating that a GL error
  447.         occurred. Also, n>1, is for future extensibility.
  448.  
  449.  
  450.         GetHistogramParameterivEXT
  451.             1           CARD8           opcode (X assigned)
  452.             1           17              GLX opcode (glXVendorPrivateWithReply)
  453.             2           5            request length
  454.             4           7               vendor specific opcode
  455.         4        GLX_CONTEXT_TAG context tag
  456.         4        ENUM        target
  457.         4        ENUM        pname
  458.       =>
  459.             1           1               reply
  460.             1                           unused
  461.             2           CARD16          sequence number
  462.             4           m               reply length, m = (n==1 ? 0 : n)
  463.             4                           unused
  464.             4           CARD32        n
  465.  
  466.         if (n=1) this follows:
  467.  
  468.             4           INT32        params
  469.             12                          unused
  470.  
  471.         otherwise this follows:
  472.  
  473.             16                          unused
  474.         n*4        LISTofINT32     params
  475.  
  476.         Note that n may be zero, indicating that a GL error
  477.         occurred. Also, n>1, is for future extensibility.
  478.  
  479.  
  480.         GetMinmaxEXT
  481.             1           CARD8           opcode (X assigned)
  482.             1           17              GLX opcode (glXVendorPrivateWithReply)
  483.             2           7             request length
  484.             4           8               vendor specific opcode
  485.         4        GLX_CONTEXT_TAG context tag
  486.         4        ENUM        target
  487.         4        ENUM        format
  488.         4        ENUM        type
  489.         1        BOOL        swap_bytes
  490.         1        BOOL        reset
  491.         2                unused
  492.       =>
  493.             1           1               reply
  494.             1                           unused
  495.             2           CARD16          sequence number
  496.             4           n               reply length
  497.             24                          unused
  498.             4*n         LISTofBYTE      pixels
  499.  
  500.         If <format> or <type> is not valid then the command is
  501.         erroneous and n=0. The structure of <pixels> is described in
  502.         Appendix A of the GLX Protocol Specification, "Pixel Data",
  503.         using the parameters <swap_bytes>, <format>, and <type>. No
  504.         extra padding is needed after <pixels> because the image
  505.         format already pads to 32 bits.
  506.  
  507.  
  508.         GetMinmaxParameterfvEXT
  509.             1           CARD8           opcode (X assigned)
  510.             1           17              GLX opcode (glXVendorPrivateWithReply)
  511.             2           5            request length
  512.             4           9               vendor specific opcode
  513.         4        GLX_CONTEXT_TAG context tag
  514.         4        ENUM        target
  515.         4        ENUM        pname
  516.       =>
  517.             1           1               reply
  518.             1                           unused
  519.             2           CARD16          sequence number
  520.             4           m               reply length, m = (n==1 ? 0 : n)
  521.             4                           unused
  522.             4           CARD32        n
  523.  
  524.         if (n=1) this follows:
  525.  
  526.             4           INT32        params
  527.             12                          unused
  528.  
  529.         otherwise this follows:
  530.  
  531.             16                          unused
  532.         n*4        LISTofINT32     params
  533.  
  534.         Note that n may be zero, indicating that a GL error
  535.         occurred. Also, n>1, is for future extensibility.
  536.  
  537.  
  538.         GetMinmaxParameterivEXT
  539.             1           CARD8           opcode (X assigned)
  540.             1           17              GLX opcode (glXVendorPrivateWithReply)
  541.             2           5            request length
  542.             4           10              vendor specific opcode
  543.         4        GLX_CONTEXT_TAG context tag
  544.         4        ENUM        target
  545.         4        ENUM        pname
  546.       =>
  547.             1           1               reply
  548.             1                           unused
  549.             2           CARD16          sequence number
  550.             4           m               reply length, m = (n==1 ? 0 : n)
  551.             4                           unused
  552.             4           CARD32        n
  553.  
  554.         if (n=1) this follows:
  555.  
  556.             4           INT32        params
  557.             12                          unused
  558.  
  559.         otherwise this follows:
  560.  
  561.             16                          unused
  562.         n*4        LISTofINT32     params
  563.  
  564.  
  565.         Note that n may be zero, indicating that a GL error
  566.         occurred. Also, n>1, is for future extensibility.
  567.  
  568. Dependencies on EXT_abgr
  569.  
  570.     If EXT_abgr is supported, the <format> parameters of GetHistogramEXT
  571.     and GetMinmaxEXT accept ABGR_EXT.  Otherwise they do not.
  572.  
  573. Dependencies on EXT_texture
  574.  
  575.     EXT_texture is required.  This extension builds on the notion of
  576.     internal image format, which is defined by EXT_texture.
  577.  
  578. Errors
  579.  
  580.     INVALID_ENUM is generated if HistogramEXT parameter <target> is not
  581.     HISTOGRAM_EXT or PROXY_HISTOGRAM_EXT.
  582.  
  583.     INVALID_VALUE is generated if HistogramEXT parameter <width> is less
  584.     than zero or is not a power of 2.
  585.  
  586.     INVALID_ENUM is generated if HistogramEXT parameter <internalformat> is
  587.     not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens
  588.     defined by the EXT_texture extension.  (Values 1, 2, 3, and 4 are not
  589.     accepted as internal formats by HistogramEXT).
  590.  
  591.     TABLE_TOO_LARGE_EXT is generated if HistogramEXT is called with
  592.     parameter <target> of HISTOGRAM_EXT and the histogram as specified is
  593.     too large for the implementation.
  594.  
  595.     INVALID_ENUM is generated if ResetHistogramEXT parameter <target> is
  596.     not HISTOGRAM_EXT.
  597.  
  598.     INVALID_ENUM is generated if GetHistogramEXT parameter <target> is not
  599.     HISTOGRAM_EXT.
  600.  
  601.     INVALID_ENUM is generated if GetHistogramEXT parameter <format> is not
  602.     RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
  603.     LUMINANCE_ALPHA.
  604.  
  605.     INVALID_ENUM is generated if GetHistogramEXT parameter <type> is not
  606.     UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
  607.  
  608.     INVALID_ENUM is generated if GetHistogramParameterivEXT or
  609.     GetHistogramParameterfvEXT parameter <target> is not HISTOGRAM_EXT or
  610.     PROXY_HISTOGRAM_EXT.
  611.  
  612.     INVALID_ENUM is generated if GetHistogramParameterivEXT or
  613.     GetHistogramParameterfvEXT parameter <pname> is not
  614.     HISTOGRAM_FORMAT_EXT, HISTOGRAM_WIDTH_EXT, HISTOGRAM_RED_SIZE_EXT,
  615.     HISTOGRAM_GREEN_SIZE_EXT, HISTOGRAM_BLUE_SIZE_EXT,
  616.     HISTOGRAM_ALPHA_SIZE_EXT, HISTOGRAM_LUMINANCE_SIZE_EXT, or
  617.     HISTOGRAM_SINK_EXT.  INVALID_ENUM is also generated if
  618.     GetHistogramParameterivEXT or GetHistogramParameterfvEXT parameter
  619.     <target> specifies the proxy histogram and <pname> specifies a
  620.     piece of state which is not maintained for the proxy histogram.
  621.  
  622.     INVALID_OPERATION is generated if HistogramEXT, ResetHistogramEXT,
  623.     GetHistogramEXT, GetHistogramParameterivEXT, or
  624.     GetHistogramParameterfvEXT is called between execution of Begin and the
  625.     corresponding execution of End.
  626.  
  627.     INVALID_ENUM is generated if MinmaxEXT parameter <target> is not
  628.     MINMAX_EXT.
  629.  
  630.     INVALID_ENUM is generated if MinmaxEXT parameter <internalformat> is
  631.     not ALPHA, RGB, RGBA, LUMINANCE, LUMINANCE_ALPHA, or one of the tokens
  632.     defined by the EXT_texture extension.  (Values 1, 2, 3, and 4 are not
  633.     accepted as internal formats by MinmaxEXT).
  634.  
  635.     INVALID_ENUM is generated if ResetMinmaxEXT parameter <target> is not
  636.     MINMAX_EXT.
  637.  
  638.     INVALID_ENUM is generated if GetMinmaxEXT parameter <target> is not
  639.     MINMAX_EXT.
  640.  
  641.     INVALID_ENUM is generated if GetMinmaxEXT parameter <format> is not
  642.     RED, GREEN, BLUE, ALPHA, RGB, RGBA, ABGR_EXT, LUMINANCE, or
  643.     LUMINANCE_ALPHA.
  644.  
  645.     INVALID_ENUM is generated if GetMinmaxEXT parameter <type> is not
  646.     UNSIGNED_BYTE, BYTE, UNSIGNED_SHORT, SHORT, UNSIGNED_INT, INT, or FLOAT.
  647.  
  648.     INVALID_ENUM is generated if GetMinmaxParameterivEXT or
  649.     GetMinmaxParameterfvEXT parameter <target> is not MINMAX_EXT.
  650.  
  651.     INVALID_ENUM is generated if GetMinmaxParameterivEXT or
  652.     GetMinmaxParameterfvEXT parameter <pname> is not MINMAX_FORMAT_EXT or
  653.     MINMAX_SINK_EXT.
  654.  
  655.     INVALID_OPERATION is generated if MinmaxEXT, ResetMinmaxEXT,
  656.     GetMinmaxEXT, GetMinmaxParameterivEXT, or GetMinmaxParameterfvEXT is
  657.     called between execution of Begin and the corresponding execution of End.
  658.  
  659. New State
  660.  
  661.     Get Value                Get Command            Type    Initial Value        Attribute
  662.     ---------                -----------            ----    -------------        ---------
  663.     HISTOGRAM_EXT            IsEnabled            B    False            pixel/enable
  664.     HISTOGRAM                GetHistogramEXT        I    empty                -
  665.     HISTOGRAM_WIDTH_EXT            GetHistogramParameterivEXT    Z+    0                -
  666.     HISTOGRAM_FORMAT_EXT        GetHistogramParameterivEXT    Z33    RGBA                -
  667.     HISTOGRAM_RED_SIZE_EXT        GetHistogramParameterivEXT    Z+    0                -
  668.     HISTOGRAM_GREEN_SIZE_EXT        GetHistogramParameterivEXT    Z+    0                -
  669.     HISTOGRAM_BLUE_SIZE_EXT        GetHistogramParameterivEXT    Z+    0                -
  670.     HISTOGRAM_ALPHA_SIZE_EXT        GetHistogramParameterivEXT    Z+    0                -
  671.     HISTOGRAM_LUMINANCE_SIZE_EXT    GetHistogramParameterivEXT    Z+    0                -
  672.     HISTOGRAM_SINK_EXT            GetHistogramParameterivEXT    B    False                -
  673.  
  674.     MINMAX_EXT                IsEnabled            B    False            pixel/enable
  675.     MINMAX                GetMinmaxEXT        Rn    (M,M,M,M),(m,m,m,m)        -
  676.     MINMAX_FORMAT_EXT            GetMinmaxParameterivEXT    Z33    RGBA                -
  677.     MINMAX_SINK_EXT            GetMinmaxParameterivEXT    B    False                -
  678.  
  679.     Note, M and m are the maximum and minimum representable values of the
  680.     minmax components.
  681.  
  682. New Implementation Dependent State
  683.  
  684.     None
  685.